package com.art.museumbackend.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.groups.Default;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 栏目实体类
 * </p>
 *
 * @author yezi
 * @since 2024-12-07
 */
@Data // 使用 Lombok 的 @Data 注解来自动生成 getter/setter 和其他常用方法
@Accessors(chain = true) // 支持链式调用
@TableName("columns") // 指定对应的数据库表名
public class Columns implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 栏目ID，主键，自增
     */
    @NotNull(groups = {Update.class})
    @TableId(value = "column_id", type = IdType.AUTO)
    private Integer columnId;

    /**
     * 父级栏目ID，默认为NULL表示顶级栏目
     */
    @TableField("parent_id")
    private Integer parentId;

    /**
     * 栏目名称，不允许为空
     */
    @NotEmpty()
    private String name;

    /**
     * 栏目简介，可以为空
     */
    private String description;

    /**
     * 图片URL，可以为空
     */
    private String imageUrl;

    /**
     * 图片宽度，可以为空
     */
    private Integer imageWidth;

    /**
     * 图片高度，可以为空
     */
    private Integer imageHeight;

    /**
     * 类型，枚举类型：美术馆、画院
     */
    private String type;

    /**
     * 创建时间，默认当前时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /**
     * 更新时间，默认当前时间，更新时自动设置为当前时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedTime;

    //分组校验
    //如果说某个校验项没有指定分组,默认属于Default分组
    //分组之间可以继承

    public interface Add extends Default {

    }

    public interface Update extends Default{

    }
}